﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;

namespace BaseCalculator {
	/// <summary>
	/// Description résumée de WebServiceCalculator
	/// </summary>
	[WebService(Namespace = "http://tempuri.org/")]
	[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
	[System.ComponentModel.ToolboxItem(false)]
	// Pour autoriser l'appel de ce service Web depuis un script à l'aide d'ASP.NET AJAX, supprimez les marques de commentaire de la ligne suivante. 
	// [System.Web.Script.Services.ScriptService]
	public class WebServiceCalculator : System.Web.Services.WebService {

		[WebMethod]
		public String BinToBin(String str) {
			return Convert.ToString(Convert.ToInt32(str, 2), 2);
		}

		[WebMethod]
		public String BinToOct(String str) {
			return Convert.ToString(Convert.ToInt32(str, 2), 8);
		}

		[WebMethod]
		public int BinToDec(String str) {
			return Convert.ToInt32(str, 2);
		}

		[WebMethod]
		public String BinToHex(String str) {
			return Convert.ToString(Convert.ToInt32(str, 2), 16);
		}

		[WebMethod]
		public String OctToBin(String str) {
			return Convert.ToString(Convert.ToInt32(str, 8), 2);
		}

		[WebMethod]
		public String OctToOct(String str) {
			return Convert.ToString(Convert.ToInt32(str, 8), 8);
		}

		[WebMethod]
		public int OctToDec(String str) {
			return Convert.ToInt32(str, 8);
		}

		[WebMethod]
		public String OctToHex(String str) {
			return Convert.ToString(Convert.ToInt32(str, 8), 16);
		}

		[WebMethod]
		public String DecToBin(int i) {
			return Convert.ToString(i, 2);
		}

		[WebMethod]
		public String DecToOct(int i) {
			return Convert.ToString(i, 8);
		}

		[WebMethod]
		public int DecToDec(int i) {
			return i;
		}

		[WebMethod]
		public String DecToHex(int i) {
			return Convert.ToString(i, 16);
		}

		[WebMethod]
		public String HexToBin(String str) {
			return Convert.ToString(Convert.ToInt32(str, 16), 2);
		}

		[WebMethod]
		public String HexToOct(String str) {
			return Convert.ToString(Convert.ToInt32(str, 16), 8);
		}

		[WebMethod]
		public int HexToDec(String str) {
			return Convert.ToInt32(str, 16);
		}

		[WebMethod]
		public String HexToHex(String str) {
			return Convert.ToString(Convert.ToInt32(str, 16), 16);
		}

		[WebMethod]
		public int addDec(int i1, int i2) {
			CalculatorWebService.CalculatorWebServiceClient wsref = new CalculatorWebService.CalculatorWebServiceClient();
			return (int)wsref.add((float)i1, (float)i2);
		}

		[WebMethod]
		public int divideDec(int i1, int i2) {
			CalculatorWebService.CalculatorWebServiceClient wsref = new CalculatorWebService.CalculatorWebServiceClient();
			return (int)wsref.divide((float)i1, (float)i2);
		}

		[WebMethod]
		public int multiplyDec(int i1, int i2) {
			CalculatorWebService.CalculatorWebServiceClient wsref = new CalculatorWebService.CalculatorWebServiceClient();
			return (int)wsref.multiply((float)i1, (float)i2);
		}

		[WebMethod]
		public int substractDec(int i1, int i2) {
			CalculatorWebService.CalculatorWebServiceClient wsref = new CalculatorWebService.CalculatorWebServiceClient();
			return (int)wsref.subtract((float)i1, (float)i2);
		}

		[WebMethod]
		public String addBin(String b1, String b2) {
			return DecToBin(addDec(BinToDec(b1), BinToDec(b2)));
		}

		[WebMethod]
		public String divideBin(String b1, String b2) {
			return DecToBin(divideDec(BinToDec(b1), BinToDec(b2)));
		}

		[WebMethod]
		public String multiplyBin(String b1, String b2) {
			return DecToBin(multiplyDec(BinToDec(b1), BinToDec(b2)));
		}

		[WebMethod]
		public String substractBin(String b1, String b2) {
			return DecToBin(substractDec(BinToDec(b1), BinToDec(b2)));
		}

		[WebMethod]
		public String addOct(String b1, String b2) {
			return DecToOct(addDec(OctToDec(b1), OctToDec(b2)));
		}

		[WebMethod]
		public String divideOct(String b1, String b2) {
			return DecToOct(divideDec(OctToDec(b1), OctToDec(b2)));
		}

		[WebMethod]
		public String multiplyOct(String b1, String b2) {
			return DecToOct(multiplyDec(OctToDec(b1), OctToDec(b2)));
		}

		[WebMethod]
		public String substractOct(String b1, String b2) {
			return DecToOct(substractDec(OctToDec(b1), OctToDec(b2)));
		}

		[WebMethod]
		public String addHex(String b1, String b2) {
			return DecToHex(addDec(HexToDec(b1), HexToDec(b2)));
		}

		[WebMethod]
		public String divideHex(String b1, String b2) {
			return DecToHex(divideDec(HexToDec(b1), HexToDec(b2)));
		}

		[WebMethod]
		public String multiplyHex(String b1, String b2) {
			return DecToHex(multiplyDec(HexToDec(b1), HexToDec(b2)));
		}

		[WebMethod]
		public String substractHex(String b1, String b2) {
			return DecToHex(substractDec(HexToDec(b1), HexToDec(b2)));
		}
	}
}
